package chapter02

object Test05_Calculator {
  def main(args: Array[String]): Unit = {
    //定义一个计算函数
    def calculator(a:Int,b:Int,f:(Int,Int)=>Int):Int={
      f(a,b)
    }
    def inputAndOut(): Int = {
      print(
        """欢迎使用计算器程序
          |1、进行加法计算
          |2、进行减法计算
          |3、进行乘法计算
          |4、进行除法计算
          |5、退出程序
          |""".stripMargin)
      //接收输入的操作码
      println("请输入操作码：")
      val code = scala.io.StdIn.readInt()
      code
    }
    def judge(code: Int, a: Int, b: Int) = {
      if (code == 1) {
        calculator(a, b, _ + _)
      } else if (code == 2) {
        calculator(a, b, _ - _)
      } else if (code == 3) {
        calculator(a, b, _ * _)
      } else if (code == 4) {
        if (b != 0) {
          calculator(a, b, _ / _)
        } else {
          "除数不能为0"
        }
      } else {
        "输入操作码错误，请重新输入："
      }
    }
    def run(): Unit = {
      scala.util.control.Breaks.breakable{
        while(true){
          val code = inputAndOut()
          if(code==5){
            println("退出程序")
            scala.util.control.Breaks.break
          }
          println("请输入第一个数字：")
          val a = scala.io.StdIn.readInt()
          println("请输入第二个数字：")
          val b = scala.io.StdIn.readInt()
          val result = judge(code, a, b)
          println("结果为："+result)
        }
      }
    }
    run()
  }
}
